home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / bildschirmschoner / multiblank / developers / example.e < prev    next >
Text File  |  1996-04-07  |  3KB  |  130 lines

  1. MODULE    '*mblank',
  2.             'exec/ports', 'exec/nodes', 'dos/dos', 'utility/tagitem',
  3.             'intuition/intuition', 'intuition/screens'
  4.  
  5. ENUM ER_NONE, ER_MSGPORT
  6.  
  7. DEF conport = NIL:PTR TO mp, consig
  8.  
  9. DEF scr = NIL:PTR TO screen
  10.  
  11. OBJECT modprefs        -> alter contents for your mod.
  12.     dummy
  13. ENDOBJECT
  14.  
  15. PROC main () HANDLE
  16.     DEF msg:PTR TO msgheader, done = FALSE, type, sig, success
  17.  
  18.     IF ((conport := CreateMsgPort ()) = NIL) THEN
  19.         Raise (ER_MSGPORT)
  20.  
  21.     conport.ln.name := 'MBlank'
  22.     conport.ln.pri := 5
  23.     AddPort (conport)
  24.  
  25.     consig := Shl (1, conport.sigbit)
  26.     REPEAT
  27.         sig := Wait (consig OR SIGBREAKF_CTRL_C)
  28.  
  29.         IF (sig AND consig)
  30.             WHILE (msg := GetMsg (conport))
  31.                 type := msg.type
  32.                 SELECT type
  33.                     CASE MBMT_INIT
  34.                         msg::initmsg.flags := IMF_INFO
  35.                         msg::initmsg.success := TRUE
  36.                         ReplyMsg (msg)
  37.                     CASE MBMT_BLANK
  38.                         success := startmod ()
  39.                         msg::blankmsg.success := success
  40.                         ReplyMsg (msg)
  41.                         IF (success)
  42.                             REPEAT
  43.                             UNTIL (sig := Wait (consig OR SIGBREAKF_CTRL_C))
  44.                         ENDIF
  45.                     CASE MBMT_CLEAR
  46.                         clearmod ()
  47.                         ReplyMsg (msg)
  48.                     CASE MBMT_CONFIG
  49.                         msg::infomsg.success := configmod (msg::infomsg.window)
  50.                         ReplyMsg (msg)
  51.                     CASE MBMT_INFO
  52.                         msg::infomsg.success := modinfo (msg::infomsg.window)
  53.                         ReplyMsg (msg)
  54.                     CASE MBMT_QUIT
  55.                         quitmod ()
  56.                         done := TRUE
  57.                         ReplyMsg (msg)
  58.                 ENDSELECT
  59.             ENDWHILE
  60.         ENDIF
  61.  
  62.         IF (sig AND SIGBREAKF_CTRL_C)
  63.             done := TRUE
  64.         ENDIF
  65.     UNTIL done
  66. EXCEPT DO
  67.     IF (conport)
  68.         RemPort (conport)
  69.         clearport (conport, TRUE)
  70.         DeleteMsgPort (conport)
  71.     ENDIF
  72. ENDPROC
  73.  
  74. PROC startmod ()
  75.     IF (scr := OpenScreenTagList (NIL, [SA_DISPLAYID,     $0,
  76.                                                     SA_DEPTH,        1,
  77.                                                     SA_QUIET,        TRUE,
  78.                                                     SA_COLORS,        [0, 0, 0, 0,
  79.                                                                         1, 15, 15, 15,
  80.                                                                         -1, 0, 0, 0]:colorspec,
  81.                                                     TAG_DONE]))
  82.         RETURN TRUE
  83.     ENDIF
  84. ENDPROC FALSE
  85.  
  86. PROC clearmod ()
  87.     IF (scr) THEN CloseScreen (scr); scr := NIL        -> Unset variables
  88. ENDPROC
  89.  
  90. PROC modinfo (win:PTR TO window)
  91.     ezrequester (win, 'Module Information', 'Example Module © 1995 S. Clayton', 'Okay')
  92. ENDPROC TRUE        -> success
  93.  
  94. PROC configmod (win:PTR TO window)
  95. ENDPROC FALSE        -> mod doesn't support configuration
  96.  
  97. PROC ezrequester (win, title, body, gads)
  98. ENDPROC EasyRequestArgs (win, [20, 0, title, body, gads], NIL, NIL)
  99.  
  100. PROC saveprefs (prefs)
  101.     DEF file, len = -1, prefsname[107]:STRING
  102.  
  103.     IF (GetProgramName (prefsname, 100))
  104.         SetStr (prefsname, StrLen (prefsname)); StrAdd (prefsname, '.prefs')
  105.         IF (file := Open (prefsname, NEWFILE))
  106.             len := Write (file, prefs, SIZEOF modprefs)
  107.             Close (file)
  108.         ENDIF
  109.     ENDIF
  110. ENDPROC len
  111.  
  112. PROC loadprefs (prefs)
  113.     DEF file, len = -1, prefsname[107]:STRING
  114.  
  115.     IF (GetProgramName (prefsname, 100))
  116.         SetStr (prefsname, StrLen (prefsname)); StrAdd (prefsname, '.prefs')
  117.         IF (file := Open (prefsname, OLDFILE))
  118.             len := Read (file, prefs, SIZEOF modprefs)
  119.             Close (file)
  120.         ENDIF
  121.     ENDIF
  122. ENDPROC len
  123.  
  124. PROC clearport (port, reply)
  125.     DEF msg
  126.  
  127.     WHILE (msg := GetMsg (port))
  128.         IF (reply) THEN ReplyMsg (msg)
  129.     ENDWHILE
  130. ENDPROC